DNSエイリアス設定をしているAmazon FSx for Windows File Serverのリストア手順
はじめに
ネクストモードの南です。
Amazon FSx for Windows File ServerのDNSエイリアス機能については、移行元のファイルシステムのDNS名を引き継いて利用するというケースや、DNS名の管理のわかりやすさといった面から、利用しているケースが多いと思います。
また、ファイルシステムにDNSエイリアス名でアクセスする運用にしておけば、リストアしたファイルシステムに切り替える必要が生じた場合に、同じDNSエイリアス名を使ってアクセスすることが可能となります。
(例えばファイルシステムを配置しているAZで障害が発生し、AZ復旧前にファイルシステムの利用を再開する必要が生じた場合など)
実際に対応を求められるケースは稀でしょうが、万が一を想定すると基本的にはDNSエイリアスを使用して運用することを推奨します。
今回はDNSエイリアスを利用しているファイルシステムについて、リストア先に切り替えて運用するケースを想定して手順を整理しましたので、本エントリで紹介をさせていただきます。
手順
環境
以下の環境で手順を進めていきます。
Active DirectoryはAWS Managed Microsoft ADで構成しています。
- Amazon FSx for Windows File Server
- DNS名:amznfsx6r1jkdvl.corp.minami.local
- DNSエイリアス:fsx.corp.minami.local
- Active Directory
- AWS Managed Microsoft AD
- ドメイン:corp.minami.local
ファイルシステムにはあらかじめDNSエイリアスを設定しています。 DNSエイリアスの設定手順については以下の公式ドキュメントやブログをご参考ください。
クライアントからDNSエイリアス名でアクセスできることを確認します。
ネットワークドライブにもDNSエイリアス名でアタッチしておきます。
ファイルシステムのリストア
ここから手順を進めていきます。
まずは、ファイルシステムのリストアから進めていきます。
AWSマネージメントコンソールからAmazon FSxの画面を開き、対象のファイルシステムをクリックします。
[バックアップ]のタブからリストア対象のバックアップにチェックを入れ、[アクション]のプルダウンから[バックアップを復元]をクリックします。
リストアするファイルシステムの設定入力画面が開かれるため、元のファイルシステムと同様の設定を入力します。
また、[アクセス]の項目で元のファイルシステムと同様のDNSエイリアス名が入力されていることを確認します。
設定内容を確認し[ファイルシステムを作成]をクリックすると、バックアップを元に新しいファイルシステムが作成され始めます。
ステータスが[利用可能]になったらリストアは完了です。
この時点でリストアしたファイルシステムにアクセスすることは可能です。
しかし、DNSエイリアス名に対応するサービスプリンシパル名 (SPN) の修正と、DNS CNAMEレコードの修正が未実施のため、DNSエイリアス名でアクセスすると元のファイルシステムに接続してしまいます。
(わかりやすくするためにリストアしたファイルシステムにはnew_filesystem.txt
というファイルを追加してます。)
- DNS名でアクセス
-
DNSエイリアス名(fsx.corp.minami.local)でアクセス
この時点では元のファイルシステムに接続される
Kerberosのサービスプリンシパル名(SPN)の修正
続いて、Kerberosのサービスプリンシパル名(SPN)の修正を進めていきます。
手順については基本的に公式ドキュメントの内容に沿って実施していきます。
まず、Active Directoryに参加しているWindowsにログオンし、管理者としてPowerShellを開きます。
また、作業を進めるにあたってPowerShell ActiveDirectoryモジュールが必要となるため、以下コマンドでインストールしていきます。
Install-WindowsFeature RSAT-AD-PowerShell
元のファイルシステムに設定した際にすでにインストール済みであれば、本手順は不要になります。
インストール済みであれば、以下のようにNoChangeNeeded
と表示されます。
PS C:\Windows\system32> Install-WindowsFeature RSAT-AD-PowerShell Success Restart Needed Exit Code Feature Result ------- -------------- --------- -------------- True No NoChangeNeeded {}
既存のDNSエイリアスのSPNを検索して削除していきます。
次のコマンドを実行しSPNを検索すると、元のファイルシステムで設定した既存のSPNが見つかります。
$ALIAS
にはファイルシステムのDNSエイリアス名を指定します。
PS C:\Windows\system32> $ALIAS = "fsx.corp.minami.local" PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS) ドメイン DC=corp,DC=minami,DC=local を確認しています CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local MSServerClusterMgmtAPI/fsx.corp.minami.local MSServerClusterMgmtAPI/FSX MSClusterVirtualServer/fsx.corp.minami.local MSClusterVirtualServer/FSX HOST/fsx.corp.minami.local HOST/FSX MSServerClusterMgmtAPI/amznfsx6r1jkdvl.corp.minami.local MSServerClusterMgmtAPI/amznfsx6r1jkdvl MSClusterVirtualServer/amznfsx6r1jkdvl.corp.minami.local MSClusterVirtualServer/amznfsx6r1jkdvl HOST/amznfsx6r1jkdvl.corp.minami.local HOST/amznfsx6r1jkdvl 既存の SPN が見つかりました PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS.Split(".")[0]) ドメイン DC=corp,DC=minami,DC=local を確認しています CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local MSServerClusterMgmtAPI/fsx.corp.minami.local MSServerClusterMgmtAPI/FSX MSClusterVirtualServer/fsx.corp.minami.local MSClusterVirtualServer/FSX HOST/fsx.corp.minami.local HOST/FSX MSServerClusterMgmtAPI/amznfsx6r1jkdvl.corp.minami.local MSServerClusterMgmtAPI/amznfsx6r1jkdvl MSClusterVirtualServer/amznfsx6r1jkdvl.corp.minami.local MSClusterVirtualServer/amznfsx6r1jkdvl HOST/amznfsx6r1jkdvl.corp.minami.local HOST/amznfsx6r1jkdvl 既存の SPN が見つかりました
次のコマンドを実行し、既存のSPNを削除します。
$Alias
にはファイルシステムのDNSエイリアス名(FQDN)を、$FileSystemDnsName
には元のファイルシステムのDNS名を指定します。
※ 公式ドキュメントの方ではHOST
のSPNの削除のみとなっていますが、MSServerClusterMgmtAPI
とMSClusterVirtualServer
のSPNが残っていると新しいSPNが上手く反映されませんでした。そのため削除コマンドを一部変更しています。
PS C:\Windows\system32> $Alias = "fsx.corp.minami.local" PS C:\Windows\system32> $FileSystemDnsName = "amznfsx6r1jkdvl.corp.minami.local" PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName ${FileSystemDnsName} | Where Type -eq 'A')[0].Name.Split(".")[0] PS C:\Windows\system32> $FSxAdComputer = (Get-AdComputer -Identity ${FileSystemHost}) PS C:\Windows\system32> Set-AdComputer -Identity $FSxAdComputer -remove @{"msDS-AdditionalDnsHostname"="$Alias"} PS C:\Windows\system32> SetSPN /D ("HOST/" + ${Alias}.Split(".")[0]) ${FSxAdComputer}.Name CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local の ServicePrincipalNames の登録を解除しています HOST/fsx 更新されたオブジェクト PS C:\Windows\system32> SetSPN /D ("MSServerClusterMgmtAPI/" + ${Alias}.Split(".")[0]) ${FSxAdComputer}.Name CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local の ServicePrincipalNames の登録を解除しています MSServerClusterMgmtAPI/fsx 更新されたオブジェクト PS C:\Windows\system32> SetSPN /D ("MSClusterVirtualServer/" + ${Alias}.Split(".")[0]) ${FSxAdComputer}.Name CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local の ServicePrincipalNames の登録を解除しています MSClusterVirtualServer/fsx 更新されたオブジェクト
再度次のコマンドを実行し、既存のSPNが検出されなくなったことを確認します。
PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS) ドメイン DC=corp,DC=minami,DC=local を確認しています そのような SPN は見つかりませんでした。 PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS.Split(".")[0]) ドメイン DC=corp,DC=minami,DC=local を確認しています そのような SPN は見つかりませんでした。
次のコマンドを実行し、リストアしたファイルシステムのSPNを設定していきます。
$Alias
にはファイルシステムのDNSエイリアス名(FQDN)を、$FSxDnsName
にはリストアしたファイルシステムのDNS名を指定します。
PS C:\Windows\system32> $FSxDnsName = "amznfsxqkp5p6cy.corp.minami.local" PS C:\Windows\system32> $Alias = "fsx.corp.minami.local" PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName $FSxDnsName | Where Type -eq 'A')[0].Name.Split(".")[0] PS C:\Windows\system32> $FSxAdComputer = (Get-AdComputer -Identity $FileSystemHost) PS C:\Windows\system32> Set-AdComputer -Identity $FSxAdComputer -Add @{"msDS-AdditionalDnsHostname"="$Alias"}
次のコマンドを実行し、新しいSPNが設定されていることを確認します。
$FileSystemDnsName
にはリストアしたファイルシステムのDNS名を指定します。
HOST
のSPNに、ファイルシステムのDNSエイリアス名(ホスト名とFQDNの2つ)が反映されていればOKです。
PS C:\Windows\system32> $FileSystemDnsName = "amznfsxqkp5p6cy.corp.minami.local" PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName ${FileSystemDnsName} | Where Type -eq 'A')[0].Name.Split(".")[0] PS C:\Windows\system32> $FSxAdComputer = (Get-AdComputer -Identity ${FileSystemHost}) PS C:\Windows\system32> SetSpn /L ${FSxAdComputer}.Name 次の項目に登録されている CN=amznfsxqkp5p6cy,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local: MSServerClusterMgmtAPI/fsx.corp.minami.local MSServerClusterMgmtAPI/FSX MSClusterVirtualServer/fsx.corp.minami.local MSClusterVirtualServer/FSX HOST/fsx.corp.minami.local HOST/FSX MSServerClusterMgmtAPI/amznfsxqkp5p6cy.corp.minami.local MSServerClusterMgmtAPI/amznfsxqkp5p6cy MSClusterVirtualServer/amznfsxqkp5p6cy.corp.minami.local MSClusterVirtualServer/amznfsxqkp5p6cy HOST/amznfsxqkp5p6cy.corp.minami.local HOST/amznfsxqkp5p6cy
DNS CNAMEレコードの修正
DNS CNAMEレコードの修正を進めていきます。
こちらも公式ドキュメントの内容に沿って実施していきます。
前の作業と同様に、Active Directoryに参加しているWindowsにログオンし、管理者としてPowerShellを開きます。
また、作業を進めるにあたってPowerShell DNS サーバーモジュールが必要となるため、以下コマンドでインストールしていきます。
Install-WindowsFeature RSAT-DNS-Server
こちらも元のファイルシステムに設定した際にすでにインストール済みであれば、本手順は不要になります。
インストール済みであれば、以下のようにNoChangeNeeded
と表示されます。
PS C:\Windows\system32> Install-WindowsFeature RSAT-DNS-Server Success Restart Needed Exit Code Feature Result ------- -------------- --------- -------------- True No NoChangeNeeded {}
次のコマンドを実行し、既存のDNS CNAMEレコードをリストアしたファイルシステムに移行します。
$Alias
にはファイルシステムのDNSエイリアス名(FQDN)を、$FileSystemDnsName
にはリストアしたファイルシステムのDNS名を指定します。
PS C:\Windows\system32> $Alias = "fsx.corp.minami.local" PS C:\Windows\system32> $FSxDnsName = "amznfsxqkp5p6cy.corp.minami.local" PS C:\Windows\system32> $AliasHost=$Alias.Split('.')[0] PS C:\Windows\system32> $ZoneName=((Get-WmiObject Win32_ComputerSystem).Domain) PS C:\Windows\system32> $DnsServerComputerName = (Resolve-DnsName $ZoneName -Type NS | Where Type -eq 'A' | Select -ExpandProperty Name)[0] PS C:\Windows\system32> Add-DnsServerResourceRecordCName -Name $AliasHost -ComputerName $DnsServerComputerName -HostNameAlias $FSxDnsName -ZoneName $ZoneName
DNSマネージャーからAWS Managed Microsoft ADのIPアドレスに接続し、[前方参照ゾーン]から対象のドメイン名を選択すると、修正したCNAMEレコードが反映されていることが確認できます。
接続確認
以上で手順は完了となります。
これで同じDNSエイリアス名でリストアしたファイルシステムに接続することが可能となりました。
実際にクライアントからアクセスをしてみます。
移行作業前後でログオンしたままだとキャッシュが残っていて、リストアしたファイルシステムに上手くアクセスできない場合があります。
その場合は一度クライアントからログオフし、DNSキャッシュのクリア(ipconfig /flushdns
)をしてから再度アクセスをしてみてください。
アタッチしていたネットワークドライブも、クライアント側で再設定することなくアクセスできています。
また、環境によってはVolume Shadow Copy Service、データ重複排除、ストレージクォータ機能を利用しているケースがあります。
これらの設定はファイルシステム側で持っていますので、基本的にリストアしたファイルシステムへそのまま引き継がれます。
おわりに
DNSエイリアスを使用している環境を想定したAmazon FSx for Windows File Serverのリストア手順、としてまとめさせていただきました。
実際に手順を実施して切り替えまでテストできると確実ですが、そこまで対応するのはなかなか難しいケースもあると思います。
机上ベースで手順を確認したり、やることを洗い出しておくだけでも普段から安心してご利用いただくことができると思いますので、本エントリをご活用いただけると幸いです。
参考
DNS エイリアスを使用してファイルシステムにアクセスする
[アップデート]Amazon FSx for Windows File ServerがDNSエイリアスを使用したファイルシステムへのアクセスをサポートするようになりました
ネクストモードについて
ネクストモード株式会社は東日本電信電話株式会社とクラスメソッド株式会社で設立したクラウドカンパニーです。「クラウドであたらしい働き方を」というメッセージを掲げ、さまざまなクラウド技術や製品を組み合わせて企業の働き方の当たり前を変えていくことを目指しています。クラウドやSaaSのご利用に関してお困りごとがあれば、ネクストモードまでぜひお問い合わせください。